﻿#define _CRT_SECURE_NO_WARNINGS 1
//#include <stdio.h>
//
//int main()
//{
//    int n;
//    int sum = 0;
//    scanf("%d", &n);
//    int arr[10][10] = { 0 };
//    for (int i = 0;i < n;i++)
//    {
//        int j = 0;
//        for (j = 0;j < n;j++)
//        {
//            scanf("%d", &arr[i][j]);
//        }
//    }
//    for (int m = 1;m < n;m++)
//    {
//        for(int x=0;x<m;x++)
//        {
//            sum += arr[m][x];
//        }
//    }
//    if (sum == 0)
//    {
//        printf("YES\n");
//    }
//    else
//    {
//        printf("NO\n");
//    }
//}
//上三角矩阵判定

#include<stdio.h>
int main()
{
	int n, m;
	int count = 0;
	scanf("%d %d", &n, &m);
	int arr1[10][10] = { 0 };
	int arr2[10][10] = { 0 };
	for (int i = 0;i < n;i++)
	{
		int j = 0;
		for (j = 0;j < m;j++)
		{
			scanf("%d", &arr1[i][j]);
		}
	}
	for (int i = 0;i < n;i++)
	{
		int j = 0;
		for (j = 0;j < m;j++)
		{
			scanf("%d", &arr2[i][j]);
		}
	}
	for (int i = 0;i < n;i++)
	{
		int j = 0;
		for (j = 0;j < m;j++)
		{
			if (arr1[i][j] == arr2[i][j])
			{
				count++;
			}
		}
	}
	if (count == m * n)
	{
		printf("Yes\n");
	}
	else
	{
		printf("No\n");
	}
}
//矩阵相等判定
